package com.zx.framework.web.util;

import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;
/**
 * 系统在启动时应初始化需要验证的所有uri，然后会根据用户在session中保存到菜单信息进行权限的验证
 * @author stylewolf
 *
 */
public class UriCache {
	
	private static final Logger LOGGER = Logger.getLogger(UriCache.class);
	/**
	 * 保存必须验证的uri信息
	 */
	private static final List<String> uris = new ArrayList<String>();
	/**
	 * 加载uri的信息
	 * @param tempUris 验证uri的集合
	 */
	public static final void refresh(List<String> tempUris){
		if(LOGGER.isDebugEnabled()){
			LOGGER.debug("now load plat's authen urls");
		}
		uris.clear();
		uris.addAll(tempUris);
	}
	/**
	 * 验证是否需要认证
	 * @param uri
	 * @return
	 */
	public static final boolean needValid(String uri){
		//替换重复的/保证地址验证的正确性
		uri = uri.replaceAll("/+", "/");
		return uris.contains(uri) || uris.contains(uri+"/");
	}
	/**
	 * 判断当前用户是否可以通过认证
	 * @param userUris 用户的权限集合
	 * @param currentUri 当前访问的uri
	 * @return
	 */
	public static final boolean access(List<String> userUris,String currentUri){
		currentUri = currentUri.replaceAll("/+", "/");
		if(!(uris.contains(currentUri) || uris.contains(currentUri+"/"))){
			return true;
		}else{
			return userUris.contains(currentUri);
		}
	}
}
